package com.utf999.qiangmanger.service.iface;

import java.util.List;

import com.utf999.qiangmanger.entity.orm.CommodityEntity;
import com.utf999.qiangmanger.exception.BizException;
import com.utf999.qiangmanger.service.IQiangService;

/**
 * @author yinwenjie
 */
public interface ICommodityService extends IQiangService {
	
	/**
	 * 为一个公司添加一个新的商品信息
	 * @param companyid 指定的公司编号
	 * @param typeid 指定的商品目录
	 * @param commodityCode 商品编码
	 * @param commodityName 商品名称
	 * @param sortName 商品简称 
	 * @param remark 商品说明信息
	 * @throws BizException
	 */
	public void appendCommodity(String companyid , String typeid , String commodityCode , String commodityName , String sortName , String remark) throws BizException;
	
	/**
	 * 更改指定商品的状态信息
	 * @param commodityid 指定商品的编号
	 * @throws BizException
	 */
	public void modifyCommodityStatus(String commodityid) throws BizException;
	
	/**
	 * 修改指定的商品的基本信息。原则是有传入则进行修改；没有则不进行修改
	 * @param commodifyid 指定的商品编号
	 * @param commodifyCode 可能进行修改的商品编号
	 * @param commodifyName 可能进行修改的商品名称
	 * @param commodifySort 可能进行修改的商品简称
	 * @param remark 可能进行修改的商品备注
	 */
	public void modifyCommodity(String commodifyid , String commodifyCode , String commodifyName , String commodifySort , String remark) throws BizException;
	
	/**
	 * 查询指定的公司下的商品名称信息
	 * @param companyid
	 * @param commodityName
	 * @return
	 * @throws BizException
	 */
	public CommodityEntity queryCommodityByCommodityName(String companyid , String commodityName) throws BizException;
	
	/**
	 * 查询指定的公司下的商品编号信息
	 * @param companyid
	 * @param commodityCode
	 * @return
	 * @throws BizException
	 */
	public CommodityEntity queryCommodityByCommodityCode(String companyid , String commodityCode) throws BizException;
	
	/**
	 * 查询指定的公司下的商品简称信息
	 * @param companyid 公司编号
	 * @param sortName 商品编写的简称
	 * @return
	 * @throws BizException
	 */
	public CommodityEntity queryCommodityBySortName(String companyid , String sortName) throws BizException;
	
	/**
	 * 按照商品的id信息，查询商品的基本信息（不包括关联的公司信息）
	 * @param uid 指定的商品编号
	 * @return 
	 * @throws BizException
	 */
	public CommodityEntity queryCommodityByid(String uid) throws BizException;
	
	/**
	 * 查询相关类型下的商品信息（根据status的值决定是否要涉及到商品状态的判断）
	 * @param typeid 指定的商品类型编号信息
	 * @param status 如果不传入，则无论商品状态如何都要进行查询；如果传入了值就要依据传入的状态进行查询
	 * @return 
	 * @throws BizException
	 */
	public List<CommodityEntity> queryCommoditysByType(String typeid , Integer status) throws BizException;
	
	/**
	 * 使用相似查询，针对商品名称、商品简称进行查询（并在去重后返回）
	 * @param likeName 相似查询的关键字
	 * @return 符合相似查询关键字的信息将被返回
	 * @throws BizException 
	 */
	public List<CommodityEntity> queryCommodityLikeName(String companyid , String likeName) throws BizException;
	
	/**
	 * 按照工单编号，查询这个工单下对应的商品信息
	 * @param orderinfoid 指定的工单编号（肯定是“消费”服务单）
	 * @return 
	 * @throws BizException
	 */
	public List<CommodityEntity> queryCommodityByOrderinfo(String orderinfoid) throws BizException;
}